
package threads;

import componentes.Configuracao;
import componentes.Mascaramento;
import componentes.Servidor;
import excessoes.LloginNuloException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.logging.Level;
import java.util.logging.Logger;
import principal.Main;

/**
 *
 * @author Wagner Tavares
 */
public class ConsultaServidor extends Consulta {
    private Servidor servidor;
    private Thread consultaServidorThread;
    
    public ConsultaServidor(Configuracao config,Servidor servidor) throws LloginNuloException {
            super(config);
            this.servidor= servidor;
            String llogin = "" ;
            if(config.getLlogin().contains(",")){
                String [] logins = config.getLlogin().split(",");
                for(int i = 0 ; i < logins.length ; i++){
                    llogin = llogin.concat("`llogin` = '"+logins[i]+"' OR `nome_parceiro` = '"+logins[i]+"'");
                    if( i < (logins.length-1) )
                        llogin = llogin.concat("OR ");
                }
            }else{
                llogin = "`llogin` = '"+config.getLlogin()+"' ";
            }
            this.query = "SELECT `host` , `eth_host_out` , `eth_host_in` , `squid` " +
                         "FROM `tbparceiro` " +
                         "WHERE "+llogin;
    }
    @Override
    public void run() {
        ResultSet resultado = consultaBanco(query);
        try{
            while(resultado.next()){
                servidor.setLllogin(config.getLlogin());
                servidor.setIpHost(resultado.getString("host"));
                servidor.setEthIn(resultado.getString("eth_host_in"));
                servidor.setEthOut(resultado.getString("eth_host_out"));
                String squid = resultado.getString("squid").toLowerCase();
                if(squid.equals("s"))
                    servidor.setProxyTransparente(true);
                else
                    servidor.setProxyTransparente(false);
                servidor.setPortaAutenticacaoWeb(config.getPortaAuth());
                servidor.setPortaSquid(config.getPortaSquid());
            }
            HashMap<String,Mascaramento> mascaramentos = new HashMap<String,Mascaramento>();
            ConsultaMascaramentos consultaMascaramentos;
            consultaMascaramentos = new ConsultaMascaramentos(config, mascaramentos);
            consultaMascaramentos.run();
            servidor.setMascaramentos(mascaramentos);
        } catch (LloginNuloException ex) {
            Logger.getLogger(Main.class.getName()).logp(Level.SEVERE, "ConsultaServidor","run()","Sem nome de interior (llogin)",ex);
        } catch (SQLException ex) {
            Logger.getLogger(Main.class.getName()).logp(Level.SEVERE, "ConsultaServidor", "run()"," Erro ao manipular resultados da consulta no banco de dados",ex);
        }
        Main.serializar();
    }
    public void start(){
        consultaServidorThread = new Thread(this,"ConsultaServidor");
        consultaServidorThread.start();
    }
    public void stop(){
        consultaServidorThread = null;
    }
    
}
